# You must import sympy.abc first then import sympy
# or it will have some bugs when it run solvers for 
# trigeometric functions.
from sympy.abc import x,y,z,t,k,l,n,m,p,q
from sympy import *
from sympy.plotting import plot3d,plot_implicit
from sympy.calculus.util import *
from sympy.utilities.iterables import permutations,combinations
from sympy.functions.combinatorial.numbers import nC,nP
from sympy.stats import *

# import the uncommenly used functions
from sympy.utilities.iterables import permutations

# check the system you are using
from sys import path,platform
match platform:
    case "linux":
        path.append("/home/huang/Documents/packaging_tutorial/src")
    case "darwin":
        path.append("/Users/huangzhiming/Documents/python学习/packaging_tutorial/src")

%load_ext autoreload 
%autoreload 1

%aimport basic_package.utils
%aimport function_calculator_package.extreme_points
%aimport function_calculator_package.utils
%aimport quadratic_function.utils
%aimport quadratic_function.hyperbola
%aimport quadratic_function.quadraticfunction

from basic_package.utils import *
from function_calculator_package.extreme_points import *
from function_calculator_package.utils import *
from quadratic_function.quadraticfunction import QuadraticFunction
from quadratic_function.hyperbola import Hyperbola
from quadratic_function.utils import line_and_quadratic

%aimport excel_function_package.chi_square_test
from excel_function_package.chi_square_test import ChiSquaredTest,chi_squared_of_error_probability
%aimport excel_function_package.data
from excel_function_package.data import Data
%aimport excel_function_package.linear_regression
from excel_function_package.linear_regression import LinearRegression

%aimport solver.utils
from solver.utils import solve_univariate_inequalities

%aimport function_calculator_package.utils 
from function_calculator_package.utils import function_is_odd,function_is_even

%aimport basic_package.seq
from basic_package.seq import ArithSeq,GeoSeq

%aimport geometry3D.frustum
%aimport geometry3D.prism
%aimport geometry3D.pyramid
%aimport geometry3D.frustum_cone
%aimport geometry3D.sphere

from geometry3D.frustum import Frustum
from geometry3D.prism import Prism,Cube,Cylinder
from geometry3D.pyramid import Pyramid,Cone,Tetrahedron
from geometry3D.frustum_cone import FrustumCone
from geometry3D.sphere import Sphere
a,b,c=symbols("a,b,c",real=True)
O2=Point(0,0)
O3=Point(0,0,0)

import numpy as np
import matplotlib.pyplot as plt